from flask import request,g
from utils.jwt_util import check_token,_generate_token
import redis

# 验证token

# 判断前端请求是否携带token
def jwt_authentication():
    # 获取前端请求里的token
    token = request.headers.get('Authorization')
    print('获取前端token2',token)

    if token:
        payload = check_token(token[4:])    #校验token
        if payload:
            # token 校验成功, 把用户id 写入g 对象
            g.id = payload.get('id')

            # 判断是否是刷新生成的token   # 判断是否是刷新生成的token, 获取不到返回false
            g.is_refresh = payload.get('is_refresh',False)
            print('g.is_fresh==>',g.is_refresh)


            # # # 从redis 获取当前用户的token
            # rds = redis.Redis(host='localhost',port=6379,db=0,password='wang123')
            # rds_token = rds.get("user:%s:token" % (g.user_id))
            # print('rds_token>>>', rds_token)
            # if rds_token:
            #     if token != rds_token.decode('utf-8'):
            #         print('两次token 不一样')
            #         # 此时说明当前用户请求携带的token与Redis中的token不一致
            #         return {"message": '没有权限访问', "code": 403}
            # else:
            #     pass



        else:
            # 此时没有校验通过
            # 现在token过期 需要重新生成token
            payload_ = {
                'is_refresh':True
            }
            _,refresh_token = _generate_token(payload_,is_refresh=True)
            print('BBBBB',refresh_token)
            # 把生成的刷新token重新给请求头中的token
            request.headers['Authorization']=refresh_token

